# -*-coding:utf-8-*-
# 22024年6月25日
# 公共包

from typing import Callable, Optional, TypeVar, List

# 泛型
T = TypeVar('T')


def get_list_index(args: List[T]) -> Callable[[int, Optional[T]], T]:
    """
    根据索引获取列表中的元素
    :param args:
    :return:
    """
    v_len = len(args)

    def __get_index(index: int, def_str: Optional[T] = None) -> T:
        """
        获取值
        :param index:
        :param def_str:
        :return:
        """
        if index > v_len:
            return def_str
        v_str = args[index - 1]

        return v_str if v_str else def_str

    return __get_index
